
// 获取应用实例
import TIM from '../../utils/tim-wx';
import TIMUploadPlugin from '../../utils/tim-upload-plugin';


const { HTTP } = require('../../utils/http');
const { request } = new HTTP();
const app = getApp()
const { getDateDiff } = require('../../utils/filter');

Page({
  data: {
    active: 0,
    messageShow: false,
    converList: [],
    now: ''
  },
  
  onShow(){
    if (typeof this.getTabBar === 'function' &&
      this.getTabBar()) {
      this.getTabBar().setData({
        selected: 2    // 根据tab的索引值设置
      }) 
    }
    if(app.globalData.isImLogin == true) {
      this._getConversationList2()
    }

  },

  onLoad: function () {
    let self = this
    wx.showLoading({
      title: '加载中...',
      icon: 'none'
    })
    setTimeout(() => {
      this.setData({
        messageShow: true
      })
    }, 2000)

    let options = {
      SDKAppID: 1400517677 // 接入时需要将0替换为您的即时通信应用的 SDKAppID
    };
    // 创建 SDK 实例，TIM.create() 方法对于同一个 SDKAppID 只会返回同一份实例
    let tim = TIM.create(options); // SDK 实例通常用 tim 表示
    tim.registerPlugin({'tim-upload-plugin': TIMUploadPlugin});
    app.globalData.tim = tim
    this._getImUsersig(tim )

    // tim.on(TIM.EVENT.SDK_READY, this.sendMsg);
    tim.on(TIM.EVENT.SDK_READY, function(event) {
      // 用于测试发消息的
      // self.bindConfirm();


      
      // console.log('SDK_READY')
      // that.globalData.isImLogin = true
      // wx.setStorageSync('isImLogin', true)
      // 收到离线消息和会话列表同步完毕通知，接入侧可以调用 sendMessage 等需要鉴权的接口
      // event.name - TIM.EVENT.SDK_READY
      // 拉取会话列表
      // self._getConversationList2()
      _getConversationList()
     
      function _getConversationList() {
        // 拉取会话列表
        let promise = tim.getConversationList();
        promise.then(function(imResponse) {
          
          const conversationList = imResponse.data.conversationList; // 会话列表，用该列表覆盖原有的会话列表
          console.log('---_getConversationList--')
          console.log(conversationList)
  
          wx.hideLoading()
          console.log(self.data.converList)
          let arr = []
          conversationList.forEach((item, index) => {
            arr.push(item.userProfile.userID)
          })
          self._getUserInfo(arr, (beans) => {

            conversationList.forEach((item, index) => {
              let a = parseInt(item.lastMessage.lastTime)
              item.fromLastTime = getDateDiff( a * 1000);
              beans.forEach((it, idx) => {
                if(item.userProfile.userID == it.id){
                  item.userInfo = it
                }
              })
            })
            console.log('--self._getUserInfo---')
            console.log(conversationList)
            self.setData({
              converList: conversationList
            })
          })

          // let p = tim.getUserProfile({
          //   userIDList: arr// 请注意：即使只拉取一个用户的资料，也需要用数组类型，例如：userIDList: ['user1']
          //   });
          //   p.then(function(imResponse) {
          //     console.log('--getUserProfile--')
        
          //   console.log(imResponse.data); // 存储用户资料的数组 - [Profile]
          //   }).catch(function(imError) {
          //   console.warn('getUserProfile error:', imError); // 获取其他用户资料失败的相关信息
          //   });
          // kk(conversationList[0].conversationID)
        }).catch(function(imError) {
          console.warn('getConversationList error:', imError); // 获取会话列表失败的相关信息
        });
      }
     
    })
    
    

  },

  _getConversationList2() {
    // 拉取会话列表
    let self = this
    let promise = app.globalData.tim.getConversationList();
    promise.then(function(imResponse) {
      
      const conversationList = imResponse.data.conversationList; // 会话列表，用该列表覆盖原有的会话列表
      console.log('---_getConversationList--')
      console.log(conversationList)

      wx.hideLoading()
      console.log(self.data.converList)
      let arr = []
      conversationList.forEach((item, index) => {
        arr.push(item.userProfile.userID)
      })
      self._getUserInfo(arr, (beans) => {
        conversationList.forEach((item, index) => {
          let a = parseInt(item.lastMessage.lastTime)
          item.fromLastTime = getDateDiff( a * 1000);
          beans.forEach((it, idx) => {
            if(item.userProfile.userID == it.id){
              item.userInfo = it
            }
          })
        })
        console.log('--self._getUserInfo---')
        console.log(conversationList)
        self.setData({
          converList: conversationList
        })
      })

      // let p = tim.getUserProfile({
      //   userIDList: arr// 请注意：即使只拉取一个用户的资料，也需要用数组类型，例如：userIDList: ['user1']
      //   });
      //   p.then(function(imResponse) {
      //     console.log('--getUserProfile--')
    
      //   console.log(imResponse.data); // 存储用户资料的数组 - [Profile]
      //   }).catch(function(imError) {
      //   console.warn('getUserProfile error:', imError); // 获取其他用户资料失败的相关信息
      //   });
      // kk(conversationList[0].conversationID)
    }).catch(function(imError) {
      console.warn('getConversationList error:', imError); // 获取会话列表失败的相关信息
    });
  },
 
  
  // 是否是置业顾问
  consultant: function (str) {
    if(str) {
      if (str.substring(0,1) == 'c') {
        return true
      }
    }
  },

 
  async _getUserInfo(arr, cb) {
    const {returnCode = '', beans = []}  = await request({
      url: '/api/user/info',
      method: 'post',
      data: {
        userId: arr
      }
    })
    if(returnCode === '0000') {
      console.log('-----userinfo--')
      console.log(beans)
      cb&&cb(beans)
    }
  },
  async _getImUsersig(tim) {
    const {returnCode = '', bean = {}} = await request({
      url: '/api/im/usersig',
      method: 'get',
      data: {}
    });

    if (returnCode === '0000') {
      console.log('--/api/im/usersig--')
      console.log(bean)
      console.log(app.globalData )
      // userID: app.globalData.userInfo.id 
      let promise =  tim.login({userID:  app.globalData.userInfo.id  + '', userSig: bean});
      promise.then(function(imResponse) {
        console.log(imResponse.data); // 登录成功
        app.globalData.isImLogin = true
        if (imResponse.data.repeatLogin === true) {
          // 标识账号已登录，本次登录操作为重复登录。v2.5.1 起支持
          console.log(imResponse.data.errorInfo);

        }
      }).catch(function(imError) {
        console.warn('login error:', imError); // 登录失败的相关信息
      });
    }
  },

  toChat(opts) {
    console.log('userInfo')
    console.log(opts.currentTarget.dataset.userinfo.conversationID)
    console.log(opts.currentTarget.dataset.userinfo.userProfile.userID)
    let conversationID = opts.currentTarget.dataset.userinfo.conversationID
    let avatar = opts.currentTarget.dataset.userinfo.userInfo.avatar
    let nickname = opts.currentTarget.dataset.userinfo.userInfo.nickname
    wx.navigateTo({
      url: "../chat/chat?conversationID=" + conversationID + "&nickname=" + nickname + '&avatar=' + avatar
    })
  },

  onChange(event) {
    this.setData({ active: event.detail.name });
    console.log('----this.active')
    console.log(this.data.active)
  },

    // 发送普通文本消息
    bindConfirm() {
      var that = this;
      
        var options = {
          to: '1', // 消息的接收方
          conversationType: TIM.TYPES.CONV_C2C, // 会话类型取值TIM.TYPES.CONV_C2C或TIM.TYPES.CONV_GROUP
          payload: { text: '大树好' } // 消息内容的容器
        }
        // // 发送文本消息，Web 端与小程序端相同
        // 1. 创建消息实例，接口返回的实例可以上屏
        let message = app.globalData.tim.createTextMessage(options)
        // 2. 发送消息
        let promise = app.globalData.tim.sendMessage(message)
        promise.then(function(imResponse) {
          // 发送成功
        
          console.log('测试的---', imResponse)

        }).catch(function(imError) {
          // 发送失败
          console.warn('sendMessage error:', imError);
        })
  
    },
})
